/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.dp1.pucp.Logistica.Controlador;

import com.dp1.pucp.Modelo.Clases.*;
import com.dp1.pucp.Logistica.DAO.*;
import com.dp1.pucp.Logistica.Vista.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import javax.swing.table.TableModel;

/**
 *
 * @author ubuntu64
 */
public class BuscarProductoControlador {
    private TipoProductoDAO m;
    private BuscarProductoGUI mantProductoView;
    private MantLineaPedidoCompraGUI mantLineaView;
    private AjustesAlmacenGUI2 ajustesPedidoView;
    private PedidoProduccionGUI pedidoProduccionView;
    private MantLineaPedidoCompraControlador mantLineaControlador;
    private LineaPedidoCompraGUI lineaPedidoView;
    private ArrayList<Tipoproducto> lstProducto;
    private int codSimu;
    private ArrayList<Tipoproducto> arrTipoProducto=new ArrayList<Tipoproducto>();
    
    public BuscarProductoControlador(TipoProductoDAO dao, BuscarProductoGUI v,LineaPedidoCompraGUI q,MantLineaPedidoCompraControlador buc){
        m = dao;
        mantProductoView = v;
        lineaPedidoView=q;
        mantLineaControlador=buc;
        
    }
    
    public BuscarProductoControlador(TipoProductoDAO dao, BuscarProductoGUI v,AjustesAlmacenGUI2 q){
        m = dao;
        mantProductoView = v;
        ajustesPedidoView=q;
        //mantLineaControlador=buc;
        mantProductoView.addCancelarListener(new cancelarListener());
        mantProductoView.addSeleccionListener(new seleccionarMP());
        mantProductoView.addBuscarListener(new listarProducto() );
        //mantProductoView.addLimpiarListener(new limpiarListener());
    }
    
    public BuscarProductoControlador(TipoProductoDAO dao, BuscarProductoGUI v,PedidoProduccionGUI q,int idSimulacion){
        m = dao;
        mantProductoView = v;
        pedidoProduccionView=q;
        codSimu=idSimulacion;
        //mantLineaControlador=buc;
        mantProductoView.addCancelarListener(new cancelarListener());
        mantProductoView.addSeleccionListener(new seleccionarPF());
        mantProductoView.addBuscarListener(new listarProductoFinal() );
        mantProductoView.addLimpiarListener(new limpiarListener());
    }
    
    class seleccionarMateriaPrima implements ActionListener
    {
         
        //private MantLineaPedidoCompraControlador buc;
        
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=mantProductoView.getFilaSel();
            if (sel!=-1){

                Tipoproducto u = lstProducto.get(sel);                
                
                LineaPedidoCompraControlador c = new LineaPedidoCompraControlador(m,lineaPedidoView,mantLineaView,mantLineaControlador,null,u,null);
                
                mantProductoView.dispose();
            }
        }
    }
    
    class seleccionarMP implements ActionListener
    {
         
        //private MantLineaPedidoCompraControlador buc;
        
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=mantProductoView.getFilaSel();
            if (sel!=-1){

                Tipoproducto u = lstProducto.get(sel);                
                
                AjustesAlmacenControlador c = new AjustesAlmacenControlador(m,ajustesPedidoView,u);
                
                mantProductoView.dispose();
            }
        }
    }
    
    class seleccionarPF implements ActionListener
    {
         
        //private MantLineaPedidoCompraControlador buc;
        
        @Override
        public void actionPerformed(ActionEvent e) {
            int sel=mantProductoView.getFilaSel();
            if (sel!=-1){

                //pasar ese arreglo arr....!!!!!
                Tipoproducto u = arrTipoProducto.get(sel);
                
                String codSimu=pedidoProduccionView.getSimulacion();
                
                PedidoProduccionControlador c = new PedidoProduccionControlador(m,pedidoProduccionView,u,codSimu);
                
                mantProductoView.dispose();
            }
        }
    }
    
    
      class listarProducto implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e) {
            listarResultados();
        }
    }
      
       class listarProductoFinal implements ActionListener
    {
        @Override
        public void actionPerformed(ActionEvent e) {
            
            
            ArrayList<Simulacion> simu=m.listarSimulacion(codSimu);
            int canNormal=simu.get(0).getCantnormal();
            int canDecorada=simu.get(0).getCantdecorada();
            int canRellena=simu.get(0).getCantrellena();
            
            //creo arreglo de TipoProducto ahi meto las 3 galletas ... si es que hay las 3, puede ser 2 o 1
            
            
            if(canNormal>0){
                //Tipoproducto galletaNormal=new Tipoproducto();
                //galletaNormal.setIdtipoproducto(1);
                ArrayList<Tipoproducto> galletaN =m.listarTipoProducto(9);
                
                arrTipoProducto.add(galletaN.get(0));
            }
            if(canDecorada>0){
                //Tipoproducto galletaDecorada=new Tipoproducto();
                //galletaDecorada.setIdtipoproducto(2);
                ArrayList<Tipoproducto> galletaD =m.listarTipoProducto(10);
                
                arrTipoProducto.add(galletaD.get(0));
            }
            if(canRellena>0){
                //Tipoproducto galletaRellena=new Tipoproducto();
                //galletaRellena.setIdtipoproducto(3);
                ArrayList<Tipoproducto> galletaR =m.listarTipoProducto(11);

                arrTipoProducto.add(galletaR.get(0));
            }
            
            //
            listarResultadosFinal(arrTipoProducto);
        }
    }
      
     public void listarResultados(){
        lstProducto = m.listarTipoProducto(0,"");               
        mantProductoView.llenaGrillaAjuste(lstProducto);        
    } 
     
     public void listarResultadosFinal(ArrayList<Tipoproducto> tipo){
        //lstProducto = m.listarTipoProductoFinal();               
        mantProductoView.llenaGrilla(tipo);        
    } 
        
    class limpiarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            mantProductoView.LimpiarDatos();
        }        
    }
    
    class cancelarListener implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e) {
            mantProductoView.dispose();
        }        
    }
    
}
